package com.sky.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sky.constant.StatusConstant;
import com.sky.context.BaseContext;
import com.sky.dto.CategoryDTO;
import com.sky.dto.CategoryPageQueryDTO;
import com.sky.entity.Category;
import com.sky.entity.Employee;
import com.sky.mapper.CategoryMapper;
import com.sky.result.PageResult;
import com.sky.service.CategoryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Service
@Slf4j
public class CategoryServiceImpl implements CategoryService {

    @Autowired
    private CategoryMapper categoryMapper;

    //添加菜品
    public void save(CategoryDTO categoryDTO)
    {
        Category category=new Category();

        BeanUtils.copyProperties(categoryDTO,category);
        category.setStatus(StatusConstant.ENABLE);
//        category.setCreateTime(LocalDateTime.now());
//        category.setUpdateTime(LocalDateTime.now());
//        category.setCreateUser(BaseContext.getCurrentId());
//        category.setUpdateUser(BaseContext.getCurrentId());

        categoryMapper.insert(category);
    }

    public PageResult pageQuery(CategoryPageQueryDTO categoryPageQueryDTO)
    {
        //分页参数，如第几页，每页多少个
        Page<Category> page=new Page<>(categoryPageQueryDTO.getPage(),categoryPageQueryDTO.getPageSize());
        //查询参数
        QueryWrapper<Category> queryWrapper=new QueryWrapper<>();


        if(categoryPageQueryDTO.getName()!=null)
        {
            queryWrapper.like("name",categoryPageQueryDTO.getName());
        }

        if(categoryPageQueryDTO.getType()!=null)
        {
            queryWrapper.eq("type",categoryPageQueryDTO.getType());
        }


        page = categoryMapper.selectPage(page, queryWrapper);
        return new PageResult(page.getRecords().size(),page.getRecords());
    }

    public void deleteById(Long id)
    {
        categoryMapper.deleteById(id);
    }

    public void update(CategoryDTO categoryDTO)
    {
        UpdateWrapper<Category> updateWrapper=new UpdateWrapper<>();
        updateWrapper.eq("id",categoryDTO.getId())
                .set("name",categoryDTO.getName())
                .set("sort",categoryDTO.getSort());
//                .set("update_time",LocalDateTime.now())//最后操作时间
//                .set("update_user",BaseContext.getCurrentId());

        int rows = categoryMapper.update(null,updateWrapper);
        if(rows>0)
        {
            log.info("id={}菜品状态更新成功",categoryDTO.getId());
        }else{
            log.info("id={}菜品状态更新成功",categoryDTO.getId());
        }
    }

    public void startOrStop(Integer status,Long id)
    {
        UpdateWrapper<Category> updateWrapper=new UpdateWrapper<>();
        updateWrapper.eq("id",id)//设置更新条件
                .set("status",status);//设置要更新的字段和值
//                .set("update_time",LocalDateTime.now())//最后操作时间
//                .set("update_user",BaseContext.getCurrentId());


        int rows = categoryMapper.update(null,updateWrapper);
        if(rows>0)
        {
            log.info("id={}菜品状态更新成功",id);
        }else{
            log.info("id={}菜品状态更新成功",id);
        }
    }


    public List<Category> list(Integer type)
    {

         return categoryMapper.selectList(new QueryWrapper<Category>().eq("type",type));

    }


}
